home *** CD-ROM | disk | FTP | other *** search
/ PC World 2006 November / PCWorld_2006-11_cd.bin / system / innosetup / isetup-5.1.8.exe / {app} / Examples / CodeExample1.iss < prev    next >
Text File  |  2006-10-03  |  5KB  |  124 lines

  1. ; -- CodeExample1.iss --
  2. ;
  3. ; This script shows various things you can achieve using a [Code] section
  4.  
  5. [Setup]
  6. AppName=My Program
  7. AppVerName=My Program version 1.5
  8. DefaultDirName={code:MyConst}\My Program
  9. DefaultGroupName=My Program
  10. UninstallDisplayIcon={app}\MyProg.exe
  11. InfoBeforeFile=Readme.txt
  12. OutputDir=userdocs:Inno Setup Examples Output
  13.  
  14. [Files]
  15. Source: "MyProg.exe"; DestDir: "{app}"; Check: MyProgCheck; BeforeInstall: BeforeMyProgInstall('MyProg.exe'); AfterInstall: AfterMyProgInstall('MyProg.exe')
  16. Source: "MyProg.chm"; DestDir: "{app}"; Check: MyProgCheck; BeforeInstall: BeforeMyProgInstall('MyProg.chm'); AfterInstall: AfterMyProgInstall('MyProg.chm')
  17. Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme
  18.  
  19. [Icons]
  20. Name: "{group}\My Program"; Filename: "{app}\MyProg.exe"
  21.  
  22. [Code]
  23. var
  24.   MyProgChecked: Boolean;
  25.   MyProgCheckResult: Boolean;
  26.   FinishedInstall: Boolean;
  27.  
  28. function InitializeSetup(): Boolean;
  29. begin
  30.   Result := MsgBox('InitializeSetup:' #13#13 'Setup is initializing. Do you really want to start setup?', mbConfirmation, MB_YESNO) = idYes;
  31.   if Result = False then
  32.     MsgBox('InitializeSetup:' #13#13 'Ok, bye bye.', mbInformation, MB_OK);
  33. end;
  34.  
  35. procedure DeinitializeSetup();
  36. var
  37.   FileName: String;
  38.   ResultCode: Integer;
  39. begin
  40.   if FinishedInstall then begin
  41.     if MsgBox('DeinitializeSetup:' #13#13 'The [Code] scripting demo has finished. Do you want to uninstall My Program now?', mbConfirmation, MB_YESNO) = idYes then begin
  42.       FileName := ExpandConstant('{uninstallexe}');
  43.       if not Exec(FileName, '', '', SW_SHOWNORMAL, ewNoWait, ResultCode) then
  44.         MsgBox('DeinitializeSetup:' #13#13 'Execution of ''' + FileName + ''' failed. ' + SysErrorMessage(ResultCode) + '.', mbError, MB_OK);
  45.     end else
  46.       MsgBox('DeinitializeSetup:' #13#13 'Ok, bye bye.', mbInformation, MB_OK);
  47.   end;
  48. end;
  49.  
  50. procedure CurStepChanged(CurStep: TSetupStep);
  51. begin
  52.   if CurStep = ssPostInstall then
  53.     FinishedInstall := True;
  54. end;
  55.  
  56. function NextButtonClick(CurPageID: Integer): Boolean;
  57. var
  58.   ResultCode: Integer;
  59. begin
  60.   case CurPageID of
  61.     wpSelectDir:
  62.       MsgBox('NextButtonClick:' #13#13 'You selected: ''' + WizardDirValue + '''.', mbInformation, MB_OK);
  63.     wpSelectProgramGroup:
  64.       MsgBox('NextButtonClick:' #13#13 'You selected: ''' + WizardGroupValue + '''.', mbInformation, MB_OK);
  65.     wpReady:
  66.       begin
  67.         if MsgBox('NextButtonClick:' #13#13 'Using the script, files can now be extracted before the installation starts. For example we could extract ''MyProg.exe'' now and run it.' #13#13 'Do you want to do this?', mbConfirmation, MB_YESNO) = idYes then begin
  68.           ExtractTemporaryFile('myprog.exe');
  69.           if not Exec(ExpandConstant('{tmp}\myprog.exe'), '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode) then
  70.             MsgBox('NextButtonClick:' #13#13 'The file could not be executed. ' + SysErrorMessage(ResultCode) + '.', mbError, MB_OK);
  71.         end;
  72.         BringToFrontAndRestore();
  73.         MsgBox('NextButtonClick:' #13#13 'The normal installation will now start.', mbInformation, MB_OK);
  74.       end;
  75.   end;
  76.  
  77.   Result := True;
  78. end;
  79.  
  80. function ShouldSkipPage(PageID: Integer): Boolean;
  81. begin
  82.   { Skip wpInfoBefore page; show all others }
  83.   case PageID of
  84.     wpInfoBefore:
  85.       Result := True;
  86.   else
  87.     Result := False;
  88.   end;
  89. end;
  90.  
  91. procedure CurPageChanged(CurPageID: Integer);
  92. begin
  93.   case CurPageID of
  94.     wpWelcome:
  95.       MsgBox('CurPageChanged:' #13#13 'Welcome to the [Code] scripting demo. This demo will show you some possibilities of the scripting support.' #13#13 'The scripting engine used is RemObjects Pascal Script by Carlo Kok. See http://www.remobjects.com/?ps for more information.', mbInformation, MB_OK);
  96.     wpFinished:
  97.       MsgBox('CurPageChanged:' #13#13 'Welcome to final page of this demo. Click Finish to exit.', mbInformation, MB_OK);
  98.   end;
  99. end;
  100.  
  101. function MyProgCheck(): Boolean;
  102. begin
  103.   if not MyProgChecked then begin
  104.     MyProgCheckResult := MsgBox('MyProg:' #13#13 'Do you want to install MyProg.exe and MyProg.chm to ' + ExtractFilePath(CurrentFileName) + '?', mbConfirmation, MB_YESNO) = idYes;
  105.     MyProgChecked := True;
  106.   end;
  107.   Result := MyProgCheckResult;
  108. end;
  109.  
  110. procedure BeforeMyProgInstall(S: String);
  111. begin
  112.   MsgBox('BeforeMyProgInstall:' #13#13 'Setup is now going to install ' + S + ' as ' + CurrentFileName + '.', mbInformation, MB_OK);
  113. end;
  114.  
  115. procedure AfterMyProgInstall(S: String);
  116. begin
  117.   MsgBox('AfterMyProgInstall:' #13#13 'Setup just installed ' + S + ' as ' + CurrentFileName + '.', mbInformation, MB_OK);
  118. end;
  119.  
  120. function MyConst(Param: String): String;
  121. begin
  122.   Result := ExpandConstant('{pf}');
  123. end;
  124.